package _0219_._04_example;
//某电商系统后台，前端程序员需要后端程序员，提供接口来完成商品的管理，展示页面。假如前后端商量好，要求能实现CRUD操作, 采用MVC分层思想, 业务逻辑如下:
//
// - 展示全部商品（Products）页面时，将仅装有商品对象的数组返回，前端不提供任何数据。
// - 新增商品时，前端提供商品各种参数，后端需要校验ID唯一性，然后将对象插入数组，返回插入结果(true/false)。
// - 查询商品, 前端提供商品ID或者商品名称(可根据ID查询或者根据商品名称查询), 后端根据信息查询商品详情, 并返回结果(商品对象)
// - 更新商品(每次更新商品中的一个信息即可), 前端提供要被更新的商品ID, 以及新的产品信息(可以用数组的形式存储新的产品信息), 后端根据商品ID找到该商品, 并将新的信息替换, 返回该商品对象.
// - 删除商品时，前端提供商品ID，后端将该商品删除后，返回删除结果。（成功返回true，根据ID找不到该商品即删除失败返回false）
import _0219_._04_example.controller.ProductController;
import _0219_._04_example.model.Product;
import _0219_.service.ProductService;

/**
 * 这个类，用来模拟前端，给后端发请求
 */
public class Main {

    public static void main(String[] args) {

        ProductController controller = new ProductController();

        System.out.println("-------------展示全部数据------------");

        // 1. 展示全部商品（Products）页面时，将仅装有商品对象的数组返回，前端不提供任何数据。
        Product[] products = controller.getAllProducts();
        // 打印一下，看看结果
        for (Product product : products) {
            product.print();
        }

        System.out.println("-----------新增商品--------------");

        // 2. 新增商品时，前端提供商品各种参数，后端需要校验ID唯一性，然后将对象插入数组，返回插入结果(true/false)。
        int id = 2002;
        String productName = "小米摄像头";
        double price = 199;
        String describe = "小米摄像头，最好的宠物伴侣";
        boolean ret = controller.insertProduct(id,productName,price,describe);
        System.out.println("插入成功与否:" + (ret?"是":"否"));

        System.out.println("-----------查询商品--------------");
        // 3. 查询商品, 前端提供商品ID或者商品名称(可根据ID查询或者根据商品名称查询), 后端根据信息查询商品详情, 并返回结果(商品对象)
        Product product = controller.searchForProducts(2002);
        System.out.println("查询数据如下：");
        System.out.println("Id:" + product.getId());
        System.out.println("商品名：" + product.getProductName());
        System.out.println("价格：" + product.getPrice());
        System.out.println("商品描述： " + product.getDescribe());
        System.out.println("-----------更新商品--------------");
        // 4. 更新商品
        describe = "小米希望追求真实的光学呈现，捕捉那些触动人心、充满情感与洞察力的瞬间";
        product = controller.updateProducts(id,productName,price,describe);
        System.out.println("更新数据如下：");
        System.out.println("Id:" + product.getId());
        System.out.println("商品名：" + product.getProductName());
        System.out.println("价格：" + product.getPrice());
        System.out.println("商品描述： " + product.getDescribe());
        System.out.println("-----------删除商品--------------");
        ret = controller.removeProduct(id);
        System.out.println("删除成功与否:" + (ret?"是":"否"));
    }

}
